package com.lyfei.yd.admin.web;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.lyfei.yd.common.core.domain.AjaxResult;
import com.lyfei.yd.domain.dto.PageQueryDto;
import com.lyfei.yd.domain.dto.SkuDto;
import com.lyfei.yd.domain.entity.SkuSpec;
import com.lyfei.yd.service.SkuService;
import com.lyfei.yd.service.SkuSpecService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/sku")
public class SkuController {

    @Autowired
    private SkuService skuService;

    @Autowired
    private SkuSpecService skuSpecService;

    @GetMapping("/page")
    public AjaxResult page(PageQueryDto dto) {
        return AjaxResult.success(skuService.page(dto));
    }

    @GetMapping("/getSkuSpecBySpuIdAndKeyId")
    public AjaxResult getSkuSpec(@RequestParam Long keyId, @RequestParam(required = false) Long skuId){
        SkuSpec skuSpec = skuSpecService.getOne(new LambdaQueryWrapper<SkuSpec>()
                .eq(SkuSpec::getKeyId, keyId)
                .eq(SkuSpec::getSkuId, skuId));

        return AjaxResult.success(skuSpec);
    }

    @PostMapping("/add")
    public AjaxResult add(@RequestBody SkuDto dto) {
        skuService.create(dto);
        return AjaxResult.success();
    }

    @PostMapping("/update/{id}")
    public AjaxResult update(@RequestBody SkuDto dto, @PathVariable Long id){
        skuService.update(dto, id);
        return AjaxResult.success();
    }

    @DeleteMapping("/delete/{id}")
    public AjaxResult delete(@PathVariable Long id){
        skuService.delete(id);
        return AjaxResult.success();
    }

    @GetMapping("/detail/{id}")
    public AjaxResult getDetail(@PathVariable Long id) {
        return AjaxResult.success(skuService.getSkuDetail(id));
    }
}
